package com.bcmusic.music.service;

import com.bcmusic.music.domain.permission.dto.AddPermissionDTO;
import com.bcmusic.music.domain.permission.dto.AddTransferDTO;
import com.bcmusic.music.domain.permission.vo.*;
import com.bcmusic.music.pojo.MusicPermission;
import com.github.pagehelper.PageInfo;
import io.swagger.models.auth.In;

import java.util.Date;
import java.util.List;
import java.util.Map;

/****
 * @Author:admin
 * @Description:MusicPermission业务层接口
 * @Date 2019/6/14 0:16
 *****/
public interface MusicPermissionService {

    /***
     * MusicPermission多条件分页查询
     * @param musicPermission
     * @param page
     * @param size
     * @return
     */
    PageInfo<MusicPermission> findPage(MusicPermission musicPermission, int page, int size);

    /***
     * MusicPermission分页查询
     * @param page
     * @param size
     * @return
     */
    PageInfo<MusicPermission> findPage(int page, int size);

    /***
     * MusicPermission多条件搜索方法
     * @param musicPermission
     * @return
     */
    List<MusicPermission> findList(MusicPermission musicPermission);

    /***
     * 删除MusicPermission
     * @param id
     */
    void delete(Integer id);

    /***
     * 修改MusicPermission数据
     * @param musicPermission
     */
    void update(MusicPermission musicPermission);

    /***
     * 新增MusicPermission
     * @param musicPermission
     */
    void add(MusicPermission musicPermission);

    /**
     * 根据ID查询MusicPermission
     * @param id
     * @return
     */
     MusicPermission findById(Integer id);

    /***
     * 查询所有MusicPermission
     * @return
     */
    List<MusicPermission> findAll();

    /**
     * 发布一首音乐的许可
     * @param addPermissionDTO
     * @return
     */
    int addPermission(AddPermissionDTO addPermissionDTO,String userNum);

    /**
     * 检查是否可以发布
     * @param musicId
     * @param type
     * @return
     */
    int check(Integer musicId,Integer type);

    /**
     * 撤销
     * @param backOutList
     * @return
     */
    int backOut(Integer musicId,List<Integer>backOutList,String userNum);

    /**
     * 获取音乐市场列表
     * @param page
     * @param size
     * @return
     */
    List<MarkerOfMusicVO>getMarketOfMusic(Integer page,Integer size);

    /**
     * 获取音乐添加购物车时的选择信息表单
     * @param musicId
     * @return
     */
    PerMissionDetailVO getMusicPermissionDetail(Integer musicId);

    /**
     * 获取音乐分发市场信息
     * @param page
     * @param size
     * @return
     */
    List<DistributionOfMusic>getDistributionOfMusic(Integer page,Integer size);

    /**
     * 为一首音乐添加授权转让
     * @param addTransferDTO
     * @param userNum
     * @return
     */
    int addTransfer(AddTransferDTO addTransferDTO,String userNum);

    /**
     * 根据音乐id获取转让信息详情(不包括日期)
     * @param musicId
     * @return
     */
    TransferDetailVO getTransferDetail(Integer musicId);

    /**
     * 根据选择的类型选择合法的时间列表
     * @param musicId
     * @param typeList
     * @return
     */
    List<GetDateVO> getTransTime(Integer musicId, List<String>typeList);
}
